// 使用 __proto__
var obj = {};

var descriptor = Object.create(null); // 没有继承的属性

// 默认没有 enumerable，没有 configurable，没有 writable
descriptor.value = "static";
Object.defineProperty(obj, "key", descriptor);

// 显式
Object.defineProperty(obj, "key", {
    enumerable: false,
    configurable: false,
    writable: false,
    value: "static",
});

// 循环使用同一对象
function withValue(value) {
    var d =
        withValue.d ||
        (withValue.d = {
            enumerable: false,
            writable: false,
            configurable: false,
            value: null,
        });
    d.value = value;
    return d;
}

// ... 并且 ...
Object.defineProperty(obj, "key", withValue("static"));

// 如果 freeze 可用, 防止后续代码添加或删除对象原型的属性
// （value, get, set, enumerable, writable, configurable）
(Object.freeze || Object)(Object.prototype);

// const obj = new Object({name:"yourdaddy"})
// console.log(obj);
